﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using fideeraSoft.Handlers;
using System.Drawing;
using fideeraSoft.Utils;
using System.Windows.Forms;
using fideeraSoft.Entities;

namespace fideeraSoft.Paneles
{
    public class EliminarTablasBaseDeDatos:PanelGeneral
    {
        private System.Windows.Forms.GroupBox gbGral;
        private System.Windows.Forms.TableLayoutPanel tlpBotones;
        private System.Windows.Forms.Button btVolver;
        private System.Windows.Forms.TableLayoutPanel tlpGral;
        
        private Button btEliminarTodoDatoDB;
        private Button btEliminarUsuarios;
        private Button btEliminarProveedores;
        private Button btEliminarProduccionesRemitos;

        private int posicionTablaBotones;


        public EliminarTablasBaseDeDatos(Handler handler)
        {
            
            //MetodosGenerales.cargarImagenEnPanel(this);

            this.formatearPanelGeneral(handler);

            this.InitializeComponent();

            this.formatearTableTitulo("ELIMINAR DATOS EN DB");

            formatearGroupBox();
            formatTableForm();
            formatearTablaBotones();
                                    
            this.Controls.Add(gbGral);
            this.Controls.Add(tlpBotones);
        }


        #region FORMATEO 
        private void formatearGroupBox()
        {                        
            gbGral.Location = new Point(MetodosGenerales.calcularCenterWidth(this.handler.FormFrame.Size.Width, gbGral.Size.Width), this.InitialRealPointVertical);
            
            gbGral.Controls.Add(tlpGral);
        }

        
        private void formatTableForm()
        {
                        
            tlpGral.Location = new Point(MetodosGenerales.calcularCenterWidth(gbGral.Size.Width, tlpGral.Size.Width), 30);

            cargarControlesEnTabla();

        }
        

        private void formatearTablaBotones()
        {
                        
            posicionTablaBotones = this.InitialRealPointVertical + gbGral.Size.Height + 20;
            tlpBotones.Location = new Point(MetodosGenerales.calcularCenterWidth(this.handler.FormFrame.Size.Width, tlpBotones.Size.Width), posicionTablaBotones);

            tlpBotones.Controls.Add(btVolver);
            
        }

        #endregion


        private void cargarControlesEnTabla()
        {

            tlpGral.Controls.Add(btEliminarTodoDatoDB);
            tlpGral.Controls.Add(btEliminarProduccionesRemitos);
            tlpGral.Controls.Add(btEliminarUsuarios);
            tlpGral.Controls.Add(btEliminarProveedores);

        }

        #region INICIALIZAR COMPONENTES
        private void InitializeComponent()
        {
            this.tlpGral = new System.Windows.Forms.TableLayoutPanel();
            this.gbGral = new System.Windows.Forms.GroupBox();
            this.tlpBotones = new System.Windows.Forms.TableLayoutPanel();
            this.btVolver = new System.Windows.Forms.Button();
            this.btEliminarTodoDatoDB = new System.Windows.Forms.Button();
            this.btEliminarUsuarios = new System.Windows.Forms.Button();
            this.btEliminarProveedores = new System.Windows.Forms.Button();
            this.btEliminarProduccionesRemitos = new System.Windows.Forms.Button();
            this.SuspendLayout();
            // 
            // tlpGral
            // 
            this.tlpGral.BackColor = System.Drawing.Color.LightCyan;
            this.tlpGral.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
            this.tlpGral.ColumnCount = 1;
            this.tlpGral.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 100F));
            this.tlpGral.Location = new System.Drawing.Point(0, 0);
            this.tlpGral.Name = "tlpGral";
            this.tlpGral.RowCount = 4;
            this.tlpGral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
            this.tlpGral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
            this.tlpGral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
            this.tlpGral.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 25F));
            this.tlpGral.Size = new System.Drawing.Size(700, 160);
            this.tlpGral.TabIndex = 0;
            // 
            // gbGral
            // 
            this.gbGral.Font = new System.Drawing.Font("Bodoni MT", 15.75F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.gbGral.Location = new System.Drawing.Point(0, 0);
            this.gbGral.Name = "gbGral";
            this.gbGral.Size = new System.Drawing.Size(800, 300);
            this.gbGral.TabIndex = 0;
            this.gbGral.TabStop = false;
            this.gbGral.Text = "Eliminar Datos De DB";
            // 
            // tlpBotones
            // 
            this.tlpBotones.BackColor = System.Drawing.Color.LightCyan;
            this.tlpBotones.CellBorderStyle = System.Windows.Forms.TableLayoutPanelCellBorderStyle.Single;
            this.tlpBotones.ColumnCount = 1;
            this.tlpBotones.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.ColumnStyles.Add(new System.Windows.Forms.ColumnStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.Location = new System.Drawing.Point(0, 0);
            this.tlpBotones.Name = "tlpBotones";
            this.tlpBotones.RowCount = 1;
            this.tlpBotones.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.RowStyles.Add(new System.Windows.Forms.RowStyle(System.Windows.Forms.SizeType.Percent, 50F));
            this.tlpBotones.Size = new System.Drawing.Size(100, 46);
            this.tlpBotones.TabIndex = 0;
            // 
            // btVolver
            // 
            this.btVolver.Anchor = ((System.Windows.Forms.AnchorStyles)((((System.Windows.Forms.AnchorStyles.Top | System.Windows.Forms.AnchorStyles.Bottom)
                        | System.Windows.Forms.AnchorStyles.Left)
                        | System.Windows.Forms.AnchorStyles.Right)));
            this.btVolver.BackColor = System.Drawing.Color.AliceBlue;
            this.btVolver.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btVolver.Location = new System.Drawing.Point(0, 0);
            this.btVolver.Name = "btVolver";
            this.btVolver.Size = new System.Drawing.Size(75, 40);
            this.btVolver.TabIndex = 0;
            this.btVolver.Text = "Volver";
            this.btVolver.UseVisualStyleBackColor = false;
            this.btVolver.Click += new System.EventHandler(this.btVolver_Click);
            // 
            // btEliminarTodoDatoDB
            // 
            this.btEliminarTodoDatoDB.BackColor = System.Drawing.Color.AliceBlue;
            this.btEliminarTodoDatoDB.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btEliminarTodoDatoDB.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btEliminarTodoDatoDB.Location = new System.Drawing.Point(0, 0);
            this.btEliminarTodoDatoDB.Name = "btEliminarTodoDatoDB";
            this.btEliminarTodoDatoDB.Size = new System.Drawing.Size(250, 40);
            this.btEliminarTodoDatoDB.TabIndex = 0;
            this.btEliminarTodoDatoDB.Text = "Eliminar Datos Productivos en DB (No se eliminaran proveedores ni usuarios)";
            this.btEliminarTodoDatoDB.UseVisualStyleBackColor = false;
            this.btEliminarTodoDatoDB.Click += new System.EventHandler(this.btEliminarTodoDatoDB_Click);
            // 
            // btEliminarUsuarios
            // 
            this.btEliminarUsuarios.BackColor = System.Drawing.Color.AliceBlue;
            this.btEliminarUsuarios.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btEliminarUsuarios.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btEliminarUsuarios.Location = new System.Drawing.Point(0, 0);
            this.btEliminarUsuarios.Name = "btEliminarUsuarios";
            this.btEliminarUsuarios.Size = new System.Drawing.Size(250, 40);
            this.btEliminarUsuarios.TabIndex = 0;
            this.btEliminarUsuarios.Text = "Eliminar Usuarios en DB";
            this.btEliminarUsuarios.UseVisualStyleBackColor = false;
            this.btEliminarUsuarios.Click += new System.EventHandler(this.btEliminarUsuarios_Click);
            // 
            // btEliminarProveedores
            // 
            this.btEliminarProveedores.BackColor = System.Drawing.Color.AliceBlue;
            this.btEliminarProveedores.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btEliminarProveedores.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btEliminarProveedores.Location = new System.Drawing.Point(0, 0);
            this.btEliminarProveedores.Name = "btEliminarProveedores";
            this.btEliminarProveedores.Size = new System.Drawing.Size(250, 40);
            this.btEliminarProveedores.TabIndex = 0;
            this.btEliminarProveedores.Text = "Eliminar Proveedores en DB";
            this.btEliminarProveedores.UseVisualStyleBackColor = false;
            this.btEliminarProveedores.Click += new System.EventHandler(this.btEliminarProveedores_Click);
            // 
            // btEliminarProduccionesRemitos
            // 
            this.btEliminarProduccionesRemitos.BackColor = System.Drawing.Color.AliceBlue;
            this.btEliminarProduccionesRemitos.Dock = System.Windows.Forms.DockStyle.Fill;
            this.btEliminarProduccionesRemitos.Font = new System.Drawing.Font("Bodoni MT", 11.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.btEliminarProduccionesRemitos.Location = new System.Drawing.Point(0, 0);
            this.btEliminarProduccionesRemitos.Name = "btEliminarProduccionesRemitos";
            this.btEliminarProduccionesRemitos.Size = new System.Drawing.Size(250, 40);
            this.btEliminarProduccionesRemitos.TabIndex = 0;
            this.btEliminarProduccionesRemitos.Text = "Eliminar Lotes, Producciones y Remitos en DB";
            this.btEliminarProduccionesRemitos.UseVisualStyleBackColor = false;
            this.btEliminarProduccionesRemitos.Click += new System.EventHandler(this.btEliminarProduccionesRemitos_Click);
            // 
            // EliminarTablasBaseDeDatos
            // 
            this.Font = new System.Drawing.Font("Bodoni MT", 14.25F, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, ((byte)(0)));
            this.ResumeLayout(false);

        }
        #endregion

        private void btVolver_Click(object sender, EventArgs e)
        {
            this.handler.backToPrincipal();
        }

        private void btEliminarTodoDatoDB_Click(object sender, EventArgs e)
        {
            try
            {
                DialogResult res;
                
                res = MessageBox.Show("Seguro desea eliminar todos los datos cargados en la base de datos? \nAL ELIMINAR TODOS LOS DATOS DE LA DB SE PERDERAN TODOS LOS DATOS CARGADOS", "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (res == DialogResult.Yes)
                {

                    handler.eliminarTodasLasProduccionesXMateriasPrimasEnDb();

                    handler.eliminarTodosLosRemitosSalidaXProduccionEnDb();

                    handler.eliminarTodasLasMateriasPrimasXLotesEnDb();

                    handler.eliminarTodosLosRemitosEntradaXLoteEnDb();

                    handler.eliminarTodosLosRemitosSalidaEnDb();

                    handler.eliminarTodasLasMateriasPrimasEnDb();

                    handler.eliminarTodosLosRemitosEntradaEnDb();

                    handler.eliminarTodosLosProductosEnDb();

                    handler.eliminarTodosLosLotesEnDb();

                    handler.eliminarTodasLasProduccionesEnDb();

                    handler.eliminarTodosLosEnvasadosEnDb();
                    

                    MessageBox.Show("SE HAN ELIMINADO CORRECTAMENTE TODOS LOS DATOS DE LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {

                }

            }
            catch (Exception ex)
            {

                CLogger.Append("[btEliminarTodoDatoDB_Click] Exception : " + ex, CLogger.ERROR);      //DEBUG
            }
        }

        private void btEliminarUsuarios_Click(object sender, EventArgs e)
        {
            try{

                List<Usuario> lstUsuarios= handler.obtenerListaUsuariosEnDB();

                if (lstUsuarios == null)
                {
                    MessageBox.Show("NO HAY NINGÚN USUARIO CARGADO EN LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }

                DialogResult res;                
                res = MessageBox.Show("Seguro desea eliminar todos los usuarios cargados?", "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (res == DialogResult.Yes)
                {
                    handler.eliminarTodosLosUsuariosEnDb();
                    MessageBox.Show("SE HAN ELIMINADO CORRECTAMENTE TODOS LOS USUARIOS DE LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                { 
            
                }

            }
            catch (Exception ex)
            {

                CLogger.Append("[btEliminarUsuarios_Click] Exception : " + ex, CLogger.ERROR);      //DEBUG
            }
        }

        private void btEliminarProveedores_Click(object sender, EventArgs e)
        {
            try{

                List<Proveedor> lstProveedor = handler.obtenerListaProveedoresEnBD();

                if (lstProveedor== null)
                {
                    MessageBox.Show("NO HAY NINGÚN USUARIO CARGADO EN LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                    return;
                }


                DialogResult res;

                res = MessageBox.Show("Seguro desea eliminar todos los proveedores cargados?", "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (res == DialogResult.Yes)
                {
                    handler.eliminarTodosLosProveedoresEnDb();
                    MessageBox.Show("SE HAN ELIMINADO CORRECTAMENTE TODOS LOS PROVEEDORES DE LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);
                }
                else
                {

                }


            }
            catch (Exception ex)
            {

                CLogger.Append("[btEliminarProveedores_Click] Exception : " + ex, CLogger.ERROR);      //DEBUG
            }
        }

        private void btEliminarProduccionesRemitos_Click(object sender, EventArgs e)
        {
            try
            {
                

                DialogResult res;

                res = MessageBox.Show("Seguro desea eliminar datos de producción, remito y lotes cargados en la base de datos? \nAL ELIMINAR TODOS LOS DATOS DE LA DB SE PERDERAN LOS DATOS CARGADOS", "INFO", MessageBoxButtons.YesNo, MessageBoxIcon.Question);

                if (res == DialogResult.Yes)
                {

                    handler.eliminarTodasLasProduccionesXMateriasPrimasEnDb();

                    handler.eliminarTodosLosRemitosSalidaXProduccionEnDb();

                    handler.eliminarTodasLasMateriasPrimasXLotesEnDb();

                    handler.eliminarTodosLosRemitosEntradaXLoteEnDb();

                    handler.eliminarTodosLosRemitosSalidaEnDb();
                    
                    handler.eliminarTodosLosRemitosEntradaEnDb();
                    
                    handler.eliminarTodosLosLotesEnDb();
                    
                    handler.eliminarTodasLasProduccionesEnDb();

                    handler.eliminarTodosLosEnvasadosEnDb();

                    MessageBox.Show("SE HAN ELIMINADO CORRECTAMENTE TODOS LOS DATOS DE PRODUCCIÓN Y REMITOS DE LA BASE DE DATOS", "INFO", MessageBoxButtons.OK, MessageBoxIcon.Information);

                }
                else
                {

                }

            }
            catch (Exception ex)
            {

                CLogger.Append("[btEliminarProduccionesRemitos_Click] Exception : " + ex, CLogger.ERROR);      //DEBUG
            }
        }

    }
}
